﻿namespace che17
{
    internal class Text14
    {
        static void Main(string[] args)
        {
            Console.WriteLine("switch语句");
 //1.作用：让顺序执行的代码 产生分支

 //2.基本语法
            //switch(变量)
            //{
            //      变量 == 常量 执行 case和 break之间的代码
            //    case 常量:
            //        满足条件执行的代码逻辑;
            //        break;（打破循环）
            //    case 常量:
            //        满足条件执行的代码逻辑;
            //        break;
            //    case 可以有无数个
            //    default:
            //        如果上面case的条件都不满足 就会执行 default中的代码
            //        break;
            //}
            // 注意： 常量！！ 只能写一个值 不能去写一个范围 不能写条件运算符啊 逻辑运算符啊
            // switch 只判断变量是否等于某一个固定值！！！！

            int a1 = 3;
            int b1 = 2;
            switch (a1)
            {
                    case 1:
                    Console.WriteLine("a1=1");
                    break;
                    case 2:
                    Console.WriteLine("a1=2");
                    break;
                    case 3:
                    Console.WriteLine("a1=3");
                    break;
                default:
                    Console.WriteLine("不满足任何条件！");
                    break;
            }
            //一般配合枚举使用
            float f = 1.33333f;
            switch (f)
            {
                case 1.4f:
                    Console.WriteLine("是1.4");
                    break;
                case 1.5f:
                    Console.WriteLine("是1.5");
                    break;
                default:
                    Console.WriteLine("哪个都不是");
                    break;
            }

 //3.default可省略
            string str = "Miku";
            switch(str)
            {
                case "rin":
                    Console.WriteLine("看来你最喜欢rin");
                    break;
                case "Miku":
                    Console.WriteLine("看来你最喜欢Miku");
                    break;
                case "len":
                    Console.WriteLine("看来你最喜欢len");
                    break;
            }

//4.可自定义常量
            char s = '连';
            //必须初始化，不能修改！
            const char s1 = '连';//这里前面加const把s1变成常量
            switch (s)
            {
                case s1:
                    Console.WriteLine("原来是连啊哈哈哈");
                    break;
            }

//5.贯穿
            //作用：满足某些条件时 做的事情是一样的 就可以使用贯穿
            int aa = 1;
            switch (aa)
            {
                // 不写case后面配对的break 就叫做贯穿
                // 满足 1 3 4 2其中一个条件 就会执行 之后的代码
                case 1:
                case 3:
                case 4:
                case 2:
                    // case和break之间可以写n句语句
                    // 并且可以嵌套使用 
                    Console.WriteLine("是个数字");
                    Console.WriteLine("是个数字");
                    Console.WriteLine("是个数字");
                    Console.WriteLine("是个数字");
                    Console.WriteLine("是个数字");
                    Console.WriteLine("是个数字");
                    Console.WriteLine("是个数字");
                    if (aa == 1)
                    {
                        switch (aa)
                        {
                            default:
                                break;
                        }
                    }
                    else
                    {

                    }
                    break;
                default:
                    break;
                    }

            //作业
            //1.唐老狮的工资是由基本工资+绩效决定的
            //绩效说明:
            //   学生评价 很兴奋，则评定为A级，绩效工资500
            //    学生评价 很充实，则评定为B级，不加绩效工资
            //    学生评价 还好吧，则评定为C级，绩效工资扣300
            //   学生评价 难理解，则评定为D级，绩效工资扣500
            //    学生评价 枯燥泛味，则评定为E级，绩效工资扣800

            //   假设唐老师的工资是4000
            //请用户输入王老师的评级，并算出王老师的工资是多少?
            Console.WriteLine("请输入评价：");
            string str2=Console.ReadLine();
            int zz = (0);
            switch(str2)
            {
                case "A级":
                     zz = 500;
                    break;
                case "B级":
                    zz = 0;
                    break;
                case "C级":
                    zz = -300;
                    break;
                case "D级":
                    zz = -500;
                    break;
                case "E级":
                    zz = -800;
                    break;
            }
            Console.WriteLine("最后工资是：" + (4000 + zz));

            //2.小唐带了10元钱去星巴克买咖啡，三种型号选择:
            // 1 = (中杯，¥5)
            //2 = (大杯，¥7)
            //3 = (超大杯，¥11)
            //请用户输入选择的型号，如果钱够，则购买成功，并算出小王最后还剩多少钱?
            //如果钱不够，则提示用户“钱不够，请换其他型号”
            int xingBa = 10;
            int qian = 0;
            Console.WriteLine("请输入选择型号：");
            string r1=Console.ReadLine();
            switch(r1)
            {
                case "1":
                    qian = 5;
                    break;
                    case "2":
                    qian = 7;
                    break;
                default:
                    Console.WriteLine("钱不够，请换其他型号");
                    break;
            }
            Console.WriteLine("余额："+(xingBa-qian));

            //3.输入学生的考试成绩，如果
            //成绩 >= 90: A
            //90 > 成绩 >= 80:B
            //80 > 成绩 >= 70:C
            //70 > 成绩 >= 60:D
            //成绩 < 60:E
            //(使用switch语法完成)
            //最后输出学生的考试等级
            Console.WriteLine("请输入考试成绩：");
            string score=Console.ReadLine();
            int uu=Convert.ToInt32(score);
            switch(uu/10)
            {
                case 9:
                    Console.WriteLine("A");
                    break;
                case 8:
                    Console.WriteLine("B");
                    break;
                case 7:
                    Console.WriteLine("C");
                    break;
                case 6:
                    Console.WriteLine("D");
                    break;
                default:
                    Console.WriteLine("E");
                    break;
            }



            //4.在控制台输入一个(0~9) 的数并显示为大写。如输入2，则显示二
            Console.WriteLine("请输入0~9一个数字");
            string charlie=Console.ReadLine();
            switch (charlie)
            {
                case "0":
                    Console.WriteLine("零");
                    break;
                case "1":
                    Console.WriteLine("一");
                    break;
                case "2":
                    Console.WriteLine("二");
                    break;
                case "3":
                    Console.WriteLine("三");
                    break;
                case "4":
                    Console.WriteLine("四");
                    break;
                case "5":
                    Console.WriteLine("五");
                    break;
                case "6":
                    Console.WriteLine("六");
                    break;
                case "7":
                    Console.WriteLine("七");
                    break;
                case "8":
                    Console.WriteLine("八");
                    break;
                case "9":
                    Console.WriteLine("九");
                    break;
            }
        }
    }
}
